<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use App\Models\Type;

//use Intervention\Image\ImageManagerStatic as Image;


class TypeController extends Controller
{
    /**
     * ***前台板块的遍历页面****
     * @$list 查询到所有的板块详情
     * return 绑定视图
     */
    public function index()
    {
        $type = new Type();
        $list = $type->typeGet();
        //dd($data);
        return view('admin.type.type', ['list' => $list]);
    }
    /**
     **** 用ajax添加一个前台板块***
     * @$data 取得添加板块名
     * @$path 找到父板块的path
     * @$tid  父板块的id
     * @$data['path] 重新组装新的路径
     * @$row 获取自增的id
     * return @$list  用自增的id找到添加板块信息并返回ajax
     */
    public function add(Request $request)
    {

        $type = new Type();
        $data = $request->except('_token');
        $path = $request->input('path');
        $tid = $request->input('type_id');


        if (empty($path)) {
            $li = $type->find($tid);
            $data['path'] = $li->path . $li->id . ',';
        }
       $user = Type::create($data);
        // 以属性找用户，若没有则新增并取得新的实例...
//        $user = $type::firstOrCreate(['name' => 'John']);
//
//        // 以属性找用户，若没有则建立新的实例...
//        $user = $type::firstOrNew(['name' => 'John']);
        $bool = $user->save();
        $row = $user->id;
        //dd($row);
        if ($bool) {
            $list = $type->typeFirst($row);
            return $list;
        } else {
            return null;
        }


    }

    /**自己的测试页面*/
    public function doadd()
    {
        return view('admin.type.test');
    }

    /**
     * **通过ajax删除板块***
     * @$id 要删除的板块id
     * return @$row 删除成功后返回的影响行数
     *
     */
    public function del(Request $request)
    {

        $type = new Type();
        $id = $request->input('id');

        $row = $type->typeDestroy($id);
        if ($row > 0) {
            return $row;
        } else {
            return null;
        }
    }

    /**
     * **更改板块名***
     * @param Request $request
     * @return null
     */
    public function edit(Request $request)
    {
        $type = new Type();

        $row = $type->typeUpdate($request);

        if ($row > 0) {
            return $row;
        } else {
            return null;
        }

    }

    /**
     * **删除板块***
     * @param Request $request
     * @return string
     */
    public function query(Request $request)
    {
        $type = new Type();

        $id = $request->input('id');
        $img = Type::find($id)->pic;
        if(!empty($img) && file_exists('./upload/type/'.$img)){
            unlink('./upload/type/'.$img);
        }

        $list = $type->typeQuery($id);
        //dd(empty($list));
        if ($list->count() != 0) {
            return json_encode(array("name" => "亲,此版块下面有孩子，一旦删除就会灭九族哦！"));
        } else {
            return json_encode(array("name" => '亲，你确定要删除吗!'));
        }
    }

    /**
     * **更改或添加图片****
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse|int
     */
    public function file(Request $request)
    {
        //dd($request->hasFile('files'));
        if ($request->hasFile('photo')) {
            if ($request->file('photo')->isValid()) {
                $file = $request->file('photo');
                $ext = $file->getClientOriginalExtension();
                $picname = time() . rand(1000, 9999) . '.' . $ext;
                $file->move('./upload/type/', $picname);
                if ($file->getError() > 0) {
                    return 111111;
                } else {
                    $type = new Type();
                    $id = $request->input('id');
                    $img = Type::find($id)->pic;
                    if(!empty($img) && file_exists('./upload/type/'.$img)){
                        unlink('./upload/type/'.$img);
                    }

                    $data = array('pic' => $picname);
                    //dd($id);
                    $row = $type->edit($id, $data);
                    if ($row > 0) {
                        return back();
                    }
                    return 22222;
                }
            } else {
                return 4444;
            }
        } else {
            return 3333;
        }


        // 1.使用自定义类进行图片缩放
        // use App\Org\Image;
        // $img = new Image();
        // $im = $img->open('./uploads/'.$picname);
        // $im->thumb(100,100)->save('./uploads/s_'.$picname);
        // dd($im);

        // 2.使用第三扩展来实现图片缩放
        // $img = Image::make('./uploads/'.$picname)->resize(100,null);
        // $img->save('./uploads/s_'.$picname);

        //等比缩放
//        $img = Image::make('./upload/type'.$picname);
//        $img->resize(100, null, function ($constraint) {
//            $constraint->aspectRatio();
//            $constraint->upsize();
//        });
//        $img->save('./uploads/type/s_'.$picname);
        // return $img->response('jpg');


        // $name = $file->getClientOriginalName();	//获取上传文件的源文件名
        // $ext = $file->getClientOriginalExtension();	//获取源文件后缀
        // $type = $file->getClientMimeType();			//获取源文件类型
        // $err = $file->getError();					//获取源文件错误号
        // getClientSize() 								//获取源文件大小
        // dd($err);


    }
}
